Jackson এবং Spring Framework একত্রে কাজ করতে পারলে JSON ডেটা প্রক্রিয়াকরণ আরও সহজ এবং দ্রুত হয়ে ওঠে। Jackson-এর অ্যানোটেশনগুলি Spring-এর RESTful API ডেভেলপমেন্ট এবং data binding এর জন্য অত্যন্ত কার্যকর। Spring Boot, Spring MVC, এবং Spring Data REST এর মতো Spring-এর বিভিন্ন অংশের সঙ্গে Jackson এর ইন্টিগ্রেশন আপনার অ্যাপ্লিকেশন ডেভেলপমেন্টকে সহজ করে।
Spring-এ Jackson অ্যানোটেশন ব্যবহার করার মাধ্যমে আপনি JSON ফিল্ড কাস্টমাইজেশন, serialization/deserialization এবং অন্যান্য প্রয়োজনীয় কনফিগারেশনগুলো পরিচালনা করতে পারেন।
Spring Framework এবং Jackson এর ইন্টিগ্রেশন
Spring-এ Jackson-এর বিভিন্ন সুবিধা এবং কাস্টম অ্যানোটেশন ব্যবহারের জন্য ObjectMapper ব্যবহৃত হয়, যা Spring MVC, Spring Boot, এবং Spring Data REST এর মাধ্যমে JSON ডেটাকে প্রক্রিয়া করে। Jackson অ্যানোটেশনগুলি Spring Framework-এর REST API সেবা এবং JSON ডেটা ফরম্যাট কাস্টমাইজ করতে সহায়তা করে।
1. Jackson এবং Spring Boot এর ইন্টিগ্রেশন
Spring Boot প্রকল্পে Jackson ডিফল্টভাবে অন্তর্ভুক্ত থাকে। এটি Spring Boot অ্যাপ্লিকেশন এর JSON ডেটা প্রক্রিয়াকরণের জন্য স্বয়ংক্রিয়ভাবে ব্যবহৃত হয়।
Spring Boot Configuration for Jackson:
# application.properties বা application.yml ফাইলের মাধ্যমে Jackson কনফিগারেশন
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
spring.jackson.time-zone=Asia/Dhaka
spring.jackson.serialization.WRITE_DATES_AS_TIMESTAMPS=false
এখানে date-format, time-zone এবং WRITE_DATES_AS_TIMESTAMPS কনফিগারেশন দিয়ে Jackson-এর তারিখ ও সময় ফরম্যাট কাস্টমাইজ করা হয়েছে।
Spring Boot Controller এর মধ্যে Jackson Annotations এর ব্যবহার:
Spring Boot-এ Jackson অ্যানোটেশনগুলি খুবই সাধারণভাবে কাজ করে, এবং আপনি এই অ্যানোটেশনগুলি Controller বা Model ক্লাসে ব্যবহার করতে পারেন।
import com.fasterxml.jackson.annotation.JsonProperty;
public class User {
@JsonProperty("user_id")
private int id;
@JsonProperty("user_name")
private String name;
// Getters and Setters
}
এখানে, @JsonProperty ব্যবহার করে ফিল্ড নাম কাস্টমাইজ করা হয়েছে যাতে JSON ফরম্যাটে user_id এবং user_name নামের ফিল্ড দেখানো হয়।
2. Spring MVC (RestController) এবং Jackson
Spring MVC-তে Jackson অ্যানোটেশন ব্যবহার করে আপনি @RestController বা @RequestBody, @ResponseBody সহ JSON ডেটা প্রক্রিয়াকরণের জন্য অ্যানোটেশন ব্যবহার করতে পারেন।
@RequestBody এবং @ResponseBody অ্যানোটেশনগুলি Spring-এ Jackson ব্যবহার করে JSON ডেটাকে পার্স করতে এবং রিটার্ন করতে সাহায্য করে।
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/users")
public class UserController {
@GetMapping
public User getUser() {
User user = new User();
user.setId(1);
user.setName("Rahim");
return user;
}
}
এখানে User ক্লাসটি Jackson অ্যানোটেশন ব্যবহার করে JSON আউটপুট তৈরি করবে। Spring RestController স্বয়ংক্রিয়ভাবে @ResponseBody ব্যবহারের মাধ্যমে JSON রিটার্ন করবে।
Output (JSON response):
{
"user_id": 1,
"user_name": "Rahim"
}
3. Jackson Annotations এবং Spring Boot Customization
Spring Boot-এ Jackson-এর মাধ্যমে কাস্টমাইজেশনের জন্য @JsonFormat, @JsonAlias, @JsonIgnoreProperties এবং অন্যান্য অ্যানোটেশন ব্যবহার করা হয়।
Custom Date Format:
import com.fasterxml.jackson.annotation.JsonFormat;
public class Event {
private String name;
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private Date eventDate;
// Getters and Setters
}
Spring Boot Configuration Example:
spring.jackson.serialization.WRITE_DATES_AS_TIMESTAMPS=false
spring.jackson.date-format=yyyy-MM-dd'T'HH:mm:ss
এই কনফিগারেশনটি Spring Boot অ্যাপ্লিকেশনে Jackson এর জন্য ISO 8601 তারিখ ফরম্যাটে JSON রিটার্ন করবে।
4. Jackson Annotations এবং Spring Data REST
Spring Data REST ব্যবহার করার সময় Jackson অ্যানোটেশনগুলির সাহায্যে আপনি JSON ডেটার কাস্টমাইজেশন করতে পারেন।
Spring Data REST অ্যাপ্লিকেশন তৈরি করার সময় Jackson এর মাধ্যমে Entity Serialization এবং Deserialization সঠিকভাবে কাস্টমাইজ করতে পারেন।
import org.springframework.data.rest.core.annotation.RestResource;
@Entity
public class Product {
@Id
private Long id;
@JsonProperty("product_name")
private String name;
@JsonProperty("product_price")
private double price;
// Getters and Setters
}
এখানে @JsonProperty ব্যবহার করা হয়েছে, যাতে JSON আউটপুটে product_name এবং product_price নামের ফিল্ড দেখানো হয়। Spring Data REST এই Entity ক্লাসের জন্য নিজেই REST API তৈরি করবে, এবং JSON ফরম্যাট সঠিকভাবে কাস্টমাইজ হবে।
5. Jackson Annotations এবং Spring Security
Spring Security ব্যবহার করার সময় Jackson অ্যানোটেশন ব্যবহার করে আপনি JSON প্রোপার্টি ফিল্টার করতে পারেন, যাতে সুরক্ষা সংক্রান্ত তথ্য (যেমন পাসওয়ার্ড) সরাসরি JSON রেসপন্সে প্রকাশ না পায়।
import com.fasterxml.jackson.annotation.JsonIgnore;
public class User {
private int id;
private String username;
@JsonIgnore
private String password;
// Getters and Setters
}
এখানে, @JsonIgnore অ্যানোটেশন ব্যবহার করা হয়েছে যাতে password ফিল্ড JSON আউটপুটে না আসে।
6. Spring Boot Custom ObjectMapper Configuration
Spring Boot-এ Jackson এর কাস্টম কনফিগারেশন করার জন্য আপনি ObjectMapper কাস্টমাইজ করতে পারেন। Spring Boot একটি স্বয়ংক্রিয় ObjectMapper কনফিগারেশন প্রদান করে, তবে আপনি আপনার প্রয়োজন অনুসারে এটি কাস্টমাইজ করতে পারেন।
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class JacksonConfig {
@Bean
public ObjectMapper objectMapper() {
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.enable(SerializationFeature.INDENT_OUTPUT); // Pretty Print JSON
return objectMapper;
}
}
এই কনফিগারেশনটি JSON আউটপুটকে pretty print ফরম্যাটে কনভার্ট করবে।
- Jackson এবং Spring Framework এর ইন্টিগ্রেশন JSON ডেটা প্রসেসিংকে অনেক সহজ এবং কাস্টমাইজড করে তোলে।
- Jackson Annotations (যেমন:
@JsonProperty,@JsonFormat,@JsonIgnore,@JsonAlias,@JsonFilterইত্যাদি) Spring-এ JSON সিরিয়ালাইজেশন এবং ডেসিরিয়ালাইজেশন কাস্টমাইজ করতে সাহায্য করে। - Spring Boot স্বয়ংক্রিয়ভাবে Jackson কনফিগারেশন হ্যান্ডেল করে, তবে আপনি প্রয়োজন অনুসারে কাস্টম ObjectMapper এবং অন্যান্য Jackson অ্যানোটেশন ব্যবহার করে আরও উন্নত কাস্টমাইজেশন করতে পারেন।
- Spring Data REST এবং Spring Security এর মতো Spring-এর বিভিন্ন অংশের সঙ্গে Jackson এর সঠিক ব্যবহারের মাধ্যমে আপনি API ডেভেলপমেন্টের জন্য আরো নিরাপদ এবং কার্যকর JSON ডেটা তৈরি করতে পারবেন।
Read more